class Solution {
public:
    int maxDistance(vector<int>& colors) {
        // int n=colors.size();
        // int maxs=0;
        // for(int i=0;i<n;i++)
        // {
        //     for(int j=0;j<n;j++)
        //     {
        //         if(colors[i]!=colors[j] && i!=j)
        //         {
        //             maxs=max(abs(j-i),maxs);
        //         }
        //     }
        // }
        // return maxs;

        //最值贪心
        //依次类推，我们发现从最终可能答案考虑，用两个指针 i 和 j 同时从两端向中间移动，
        //每次各移动一步，当出现和首或者尾不同的数字的时候，最大可能长度就出现了：n-1-i 或者 j，
        //因为他们是相等的(i+j==n-1)。所以直接break输出即可。
        int n=colors.size();
        int i,j;
        for(i=0,j=n-1;i<j;i++,j--)
        {
            if(colors[i]!=colors[n-1] || colors[j]!=colors[0])
                break;
        }
        return j;
    }
};